package com.mh.pojo;

import cn.afterturn.easypoi.excel.annotation.*;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

//导出Excel表
@Data
@ExcelTarget("users")
//标识该类是一个 Excel 数据模型, 表示该类为导入导出Excel的类
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    /** @Excel用于映射 Excel 表格中的列
     *  name: 指定 Excel 表格中列的名称
     *  orderNum: 指定列的顺序,1代表在第一列
     */
    @Excel(name = "编号", orderNum = "1")
    private String id;
    @Excel(name = "姓名", orderNum = "2")
    private String name;
    @Excel(name = "年龄", orderNum = "4",suffix = "岁")
    private Integer age;
    @Excel(name = "生日", orderNum = "3",width = 20.0,exportFormat = "yyyy年MM月dd日")
    private Date birthday;

    @Excel(name = "状态", orderNum = "6", replace = {"未激活_0","激活_1"})
    //值替换:在 Excel 读写过程中，将字段的实际值替换为指定的显示值，或者将显示值替换为实际值
    //格式:{"显示值_实际值", "显示值_实际值", ...}
    //实际值为 "0" 时，显示为 "未激活" ; 实际值为 "1" 时，显示为 "激活"
    private String status; //0未激活,1激活

    @Excel(name = "爱好", orderNum = "7")
    //没有设置orderNum默认往前排
    private List<String> hobby;

    //多对一关系
    //导出Excel时忽略此属性(不导出)
    //@ExcelIgnore
    @ExcelEntity(name = "身份信息")
    //用于标识一个字段是嵌套对象，表示该对象也需要映射到 Excel 表格中
    //父对象名称.子对象名称 的形式显示
    private Card card;

    //一对多关系
    //@ExcelIgnore
    @ExcelCollection(name = "订单",orderNum = "8")
    //用于标识一个字段是集合类型（如 List），表示该集合中的每个元素也需要映射到 Excel 表格中
    //集合名称.字段名称 的形式显示
    private List<Order> orders;

    @Excel(name = "头像信息",type = 2,orderNum = "0",width = 12,height = 12)
    //type = 2 可能表示该字段是图片类型
    private String photo;
}
